package com.ddxz.middleground.master.mapper;

import com.ddxz.middleground.master.entity.RoleEntity;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/7/28
 */

@Mapper
@Repository
public interface RoleMapper {
    /**
     * 分页检索角色信息
     *
     * @param status  状态信息：0 全部；1 启用；2 禁用
     * @param keyword 检索关键字
     * @param tenant  租户信息
     * @return 检索结果
     */
    Page<RoleEntity> getList(@Param("status") Integer status, @Param("kw") String keyword,
                             @Param("tenant") String tenant);

    /**
     * 获取角色详情
     *
     * @param roleId 角色标识
     * @param tenant 租户信息
     * @return 角色详细内容
     */
    RoleEntity getRoleById(@Param("roleId") String roleId, @Param("tenant") String tenant);

    /**
     * 修改角色信息
     *
     * @param entity 角色信息
     * @param tenant 租户信息
     * @return 是否修改成功
     */
    Integer modifyRole(@Param("entity") RoleEntity entity, @Param("tenant") String tenant);

    /**
     * 获取指定名称的角色个数
     *
     * @param name   角色名称
     * @param tenant 租户信息
     * @return 角色个数
     */
    Integer getNumByName(@Param("name") String name, @Param("tenant") String tenant);

    /**
     * 获取指定编码的角色个数
     *
     * @param code   角色编码
     * @param tenant 租户信息
     * @return 角色数
     */
    Integer getNumByCode(@Param("code") String code, @Param("tenant") String tenant);

    /**
     * 新增角色信息
     *
     * @param entity 角色信息
     * @param tenant 租户信息
     * @return 是否保存成功
     */
    Integer saveRole(@Param("entity") RoleEntity entity, @Param("tenant") String tenant);

    /**
     * 删除角色信息
     *
     * @param roleId 角色标识
     * @param tenant 租户信息
     * @return 是否删除成功
     */
    Integer removeRole(@Param("roleId") String roleId, @Param("tenant") String tenant);
}
